/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：Label.js<br>
 * 日期：2016年11月1日<br>
 * 作者: 杨顺强<br>
 * 功能：<br>
 *
 * 修改记录：<br>
 * 日期: 2020年10月13日<br>
 * 描述:
 * 更新功能: 非空判断<br>
 ******************************************************************************/
window.makeNamespace(window, "Rainier.UI.V2");

/**
 * 类型名称：Rainier.UI.V2.LabelInplaceEditor<br>
 * 类型功能：创建LabelInplaceEditor对象，完成对input标签的修改操作<br>
 * 接口函数：<br>
 * 成员变量：<br>
 */
Rainier.UI.V2.LabelInplaceEditor = draw2d.ui.LabelInplaceEditor.extend({
  NAME: "Rainier.UI.V2.LabelInplaceEditor",

  /**
   * 函数名称：Rainier.UI.V2.LabelInplaceEditor.init<br>
   * 函数功能：构造函数<br>
   * 参数输入:listener : 添加对当前对象的监听<br>
   * 异常信息：无<br>
   */
  init: function (listener) {
    this._super(listener);
  },

  /**
   * 函数名称：Rainier.UI.V2.LabelInplaceEditor.start<br>
   * 函数功能：当双击修改时，执行该函数<br>
   * 参数输入：label<br>
   * 参数输出：无<br>
   * 函数返回：无<br>
   * 异常信息：无<br>
   */
  start: function (label) {
    this._super(label);

    // Position the INPUT and init the autoresize of the element
    //
    var canvas = this.label.getCanvas();
    var bb = null;
    // if(this.label.getParent()){
    //   bb = this.label.getParent().getBoundingBox();
    // }else{
    bb = this.label.getBoundingBox();
    // }

    bb.setPosition(canvas.fromCanvasToDocumentCoordinate(bb.x, bb.y));

    // remove the scroll from the body if we add the canvas directly into the body
    var scrollDiv = canvas.getScrollArea();
    if (scrollDiv.is($("body"))) {
      bb.translate(canvas.getScrollLeft(), canvas.getScrollTop());
    }

    bb.translate(-1, -1);
    bb.resize(2, 2);

    this.html.css({
      position: "absolute",
      top: bb.y,
      left: bb.x,
      width: bb.w * (1 / canvas.getZoom()) + 7,
      height: Math.max(25, bb.h * (1 / canvas.getZoom()) - 7),
    });
    this.html.fadeIn(
      $.proxy(function () {
        // this.html.focus();
      }, this)
    );
    console.log("被双击了");
  },

  /**
   * 函数名称：Rainier.UI.V2.LabelInplaceEditor.commit<br>
   * 函数功能：当完成修改时，执行该函数<br>
   * 参数输入：无<br>
   * 参数输出：无<br>
   * 函数返回：无<br>
   * 异常信息：无<br>
   */
  commit: function (model) {
    this.html.unbind("blur", this.commitCallback);
    $("body").unbind("click", this.commitCallback);
    if (this.label.getParent()) {
      bb = this.label.getParent().getBoundingBox();
    } else {
      bb = this.label.getBoundingBox();
    }
    // this.html.css({position:"absolute","top": bb.y, "left":bb.x, "width":bb.w, "height":Math.max(25,bb.h),});
    var label = this.html.val();
    if (label == "") {
      this.label.visible = false;
      var cmd = new draw2d.command.CommandAttr(this.label, { text: label });
      this.label.getCanvas().getCommandStack().execute(cmd);
      this.html.fadeOut(
        $.proxy(function () {
          this.html.remove();
          this.html = null;
          this.listener.onCommit(this.label.getText());
        }, this)
      );
    } else {
      var cmd = new draw2d.command.CommandAttr(this.label, { text: label });
      this.label.getCanvas().getCommandStack().execute(cmd);
      this.html.fadeOut(
        $.proxy(function () {
          this.html.remove();
          this.html = null;
          this.listener.onCommit(this.label.getText());
        }, this)
      );
    }
    this.returnLabel();
    console.log("修改结束");
  },
  returnLabel: function () {
    console.log(1111);
  },
});
